﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml;

namespace JoomlaXMLEditor
{
    // okno główne
    public partial class MainWindow : Form
    {
        // aktualny plik
        public XmlDocument actualFile; 
        // konstruktor
        public MainWindow()
        {
            InitializeComponent();
            this.actualFile = null;
        }
        // zamykanie
        private void zakończToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
        // zamykanie
        private void zakończToolStripMenuItem_Click_1(object sender, EventArgs e)
        {
            Environment.Exit(0);
        }
        // okno about - pokazywanie
        private void AboutMenuButton_Click(object sender, EventArgs e)
        {
            new AboutBox().Show();
        }
        // nowy plik
        private void NewFileButton_Click(object sender, EventArgs e)
        {
            TemplateXML xmlTmpl = new TemplateXML(this);
            xmlTmpl.loadFile(this.XMLTree, "templateDetails.xml");
        }
        // edycja
        private void EditFileButton_Click(object sender, EventArgs e)
        {
            OpenFileDialog dialog = new OpenFileDialog();
            dialog.Filter = "Joomla! Template XML (*.xml)|*.XML";
            dialog.CheckFileExists = true;
            if (dialog.ShowDialog() == DialogResult.OK)
            {
                TemplateXML xmlTmpl = new TemplateXML(this);
                xmlTmpl.loadFile(this.XMLTree, dialog.FileName);
            }
        }
        // zapis
        private void SaveFileButton_Click(object sender, EventArgs e)
        {
            if (this.actualFile != null)
            {
                SaveFileDialog dialog = new SaveFileDialog();
                dialog.Filter = "Joomla! Template XML (*.xml)|*.XML";
                if (dialog.ShowDialog() == DialogResult.OK)
                {
                    TemplateXML xmlTmpl = new TemplateXML(this);
                    xmlTmpl.saveFile(dialog.FileName);
                }
            }
            else
            {
                MessageBox.Show("Proszę przed zapisaniem wczytać plik");
            }
        }
        // podstawowe informacje
        private void TemplateBasicParametersButton_Click(object sender, EventArgs e)
        {
            if (this.actualFile != null)
            {
                String version, type;

                XmlNode node = this.actualFile.GetElementsByTagName("install")[0];
                version = node.Attributes["version"].Value;
                type = node.Attributes["client"].Value;

                TemplateBasicParams windowBasicParams = new TemplateBasicParams(this, version, type);
                windowBasicParams.Show();
            }
            else
            {
                MessageBox.Show("Proszę przed edycją wczytać plik");
            }
        }
        // informacje o szablonie
        private void TemplateInformationButton_Click(object sender, EventArgs e)
        {
            if (this.actualFile != null)
            {
                TemplateInformations windowTemplateInformations = new TemplateInformations(this);
                windowTemplateInformations.Show();
            }
            else
            {
                MessageBox.Show("Proszę przed edycją wczytać plik");
            }
        }
        // generowanie xhtml
        private void PDFReportButton_Click(object sender, EventArgs e)
        {
            if (this.actualFile != null)
            {
                SaveFileDialog dialog = new SaveFileDialog();
                dialog.Filter = "Joomla! Template XML (*.xml)|*.XML";
                if (dialog.ShowDialog() == DialogResult.OK)
                {
                    TemplateXML xmlTmpl = new TemplateXML(this);
                    xmlTmpl.saveFile(dialog.FileName);
                    xmlTmpl.transformToXHTML(dialog.FileName, dialog.FileName.Replace(".xml", ".xhtml"));
                }
            }
            else
            {
                MessageBox.Show("Proszę przed eksportem wczytać plik");
            }
        }
        // pozycje modułów
        private void TemplateModulePositionsButton_Click(object sender, EventArgs e)
        {
            if (this.actualFile != null)
            {
                TemplatePositions windowTemplatePositions = new TemplatePositions(this);
                windowTemplatePositions.Show();
            }
            else
            {
                MessageBox.Show("Proszę przed edycją wczytać plik");
            }
        }
        // języki szablonu
        private void TemplateLanguagesButton_Click(object sender, EventArgs e)
        {
            if (this.actualFile != null)
            {
                TemplateLanguages windowTemplateLanguages = new TemplateLanguages(this);
                windowTemplateLanguages.Show();
            }
            else
            {
                MessageBox.Show("Proszę przed edycją wczytać plik");
            }
        }
        // pliki szablonu
        private void TemplateFilesButton_Click(object sender, EventArgs e)
        {
            if (this.actualFile != null)
            {
                TemplateFiles windowTemplateFiles = new TemplateFiles(this);
                windowTemplateFiles.Show();
            }
            else
            {
                MessageBox.Show("Proszę przed edycją wczytać plik");
            }
        }
        // opcje szablonu
        private void TemplateOptionsButton_Click(object sender, EventArgs e)
        {
            if (this.actualFile != null)
            {
                TemplateParameters window = new TemplateParameters(this);
                window.Show();
            }
            else
            {
                MessageBox.Show("Proszę przed edycją wczytać plik");
            }
        }
    }
}
